<CheckLabel@BoxLayout>:
    text: ''
    spacing: 10
    orientation: 'horizontal'
    height: 30
    size_hint: 1, None

    CheckBox:
        id: checkbox
        size_hint: None, None
        size: 25, 25
        pos_hint: {'center_y': 0.5}
        on_active: root.save_settings(*args)

    Label:
        text: root.text
        text_size: self.width, None

<CheckStringLabel@BoxLayout>:
    text: ''
    hint_text: ''
    spacing: 10
    orientation: 'horizontal'
    height: 30
    size_hint: 1, None

    CheckBox:
        id: checkbox
        size_hint: None, None
        size: 25, 25
        pos_hint: {'center_y': 0.5}
        on_active: root.save_settings(*args)

    Label:
        text: root.text
        size: self.texture_size
        size_hint: None, 1

    TextInput:
        id: textinput
        hint_text: root.hint_text
        on_focus: root.save_settings(*args)
        background_color: 0.3, 0.3, 0.3, 0.3
        foreground_color: 0.9, 0.9, 0.9, 1
        multiline: False
        height: self.minimum_height
        size_hint_y: None

        disabled: not checkbox.active

<StringLabel@BoxLayout>:
    text: ''
    hint_text: ''
    spacing: 10
    orientation: 'horizontal'
    height: 30
    size_hint: 1, None
    password: False

    Label:
        text: root.text
        size: self.texture_size
        size_hint: None, 1

    TextInput:
        id: textinput
        hint_text: root.hint_text
        on_focus: root.save_settings(*args)
        background_color: 0.3, 0.3, 0.3, 0.3
        foreground_color: 0.9, 0.9, 0.9, 1
        multiline: False
        height: self.minimum_height
        size_hint_y: None
        password: root.password

<CheckDropdownLabel@BoxLayout>:
    text: ''
    values: []
    hint_text: ''
    spacing: 10
    orientation: 'horizontal'
    height: 30
    size_hint: 1, None

    CheckBox:
        id: checkbox
        size_hint: None, None
        size: 25, 25
        pos_hint: {'center_y': 0.5}
        on_active: root.save_settings(*args)

    Label:
        text: root.text
        size: self.texture_size
        size_hint: None, 1

    DropdownBox:
        id: dropdown
        disabled: not checkbox.active
        values: root.values
        on_text: root.save_settings(*args)

<CheckFileLabel@BoxLayout>:
    text: ''
    hint_text: ''
    spacing: 10
    orientation: 'horizontal'
    height: 30
    size_hint: 1, None

    CheckBox:
        id: checkbox
        size_hint: None, None
        size: 25, 25
        pos_hint: {'center_y': 0.5}
        on_active: root.save_settings(*args)

    Label:
        text: root.text
        size: self.texture_size
        size_hint: None, 1

    TextInput:
        id: textinput
        hint_text: root.hint_text
        on_focus: root.save_settings(*args)
        background_color: 0.3, 0.3, 0.3, 0.3
        foreground_color: 0.9, 0.9, 0.9, 1
        multiline: False
        height: self.minimum_height
        size_hint_y: None

        disabled: not checkbox.active

    Button:
        size_hint: None, None
        height: 30
        width: 30
        text: '...'
        on_release: root.choose_path()
        disabled: not checkbox.active
